package com.ddwl.wallet.dao.mapper;


import com.ddwl.common.dao.mapper.TkMapper;
import com.ddwl.schema.bo.order.QueryUserDistOrderBo;
import com.ddwl.schema.bo.order.SubAgentDistOrderBo;
import com.ddwl.schema.bo.wallet.QueryWalletMainReportBo;
import com.ddwl.schema.vo.wallet.AgentDistStatisticsDto;
import com.ddwl.wallet.dao.dto.DistOrderStatisticsDto;
import com.ddwl.wallet.dao.dto.DistOrderStatisticsQueryDto;
import com.ddwl.wallet.dao.dto.DistOrderTotalDto;
import com.ddwl.wallet.dao.dto.UserWalletMainReportDto;
import com.ddwl.wallet.dao.model.DistOrder;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 分润金额记录表(Order)mybatis接口
 *
 * @author zach
 * @since 2020-07-22 12:44:35
 */
public interface OrderMapper extends TkMapper<DistOrder> {


    /**
     * 查询用户分销订单列表,后台
     * @param dto
     * @return
     */
    List<DistOrder> queryDistOrderForConsole(@Param("dto") QueryUserDistOrderBo dto);

    /**
     * 查询用户分销订单列表总金额,后台
     * @param dto
     * @return
     */
    DistOrderTotalDto queryDistOrderTotalForConsole(@Param("dto") QueryUserDistOrderBo dto);

    /**
     * 查询用户分销订单带结算月度报表信息
     * @param dto
     * @return
     */
    List<DistOrderStatisticsDto> queryOrderMonthlyReport(@Param("dto") DistOrderStatisticsQueryDto dto);

    /**
     * 查询用户分销订单信息
     * @param dto
     * @return
     */
    List<DistOrderStatisticsDto> queryOrderReport(@Param("dto") DistOrderStatisticsQueryDto dto);

    /**
     * 查询总收益
     * @param dto
     * @return
     */
    UserWalletMainReportDto queryWalletMainReport(@Param("dto") QueryWalletMainReportBo dto);

    void batchUpdateUser(@Param("list")List<DistOrder> list);


    int addNumberRefund(@Param("orderId") String orderId, @Param("spuId") String spuId);

    int minusNumberRefund(@Param("orderId") String orderId, @Param("spuId") String spuId);

    List<String> distOrderGroupByOrderId(@Param("bo") SubAgentDistOrderBo bo);

    List<AgentDistStatisticsDto> getAgentDistStatistics(@Param("distUserId") String distUserId, @Param("list") List<String> sources);
}